module Sim();
reg clock;
reg reset;
reg [11:0] io_DataIn;
reg io_Halting;
reg io_Unlocking;
wire io_Unlock;
wire io_Halt;
Core uut(
    .clock(clock),
    .reset(reset),
    .io_Halt(io_Halt),
    .io_DataIn(io_DataIn),
    .io_Halting(io_Halting),
    .io_Unlock(io_Unlock),
    .io_Unlocking(io_Unlocking)
    );

initial begin
    clock = 0;
    forever begin
        #5 clock = ~clock;
    end
end

initial begin
    $dumpfile("Sim.vcd");
    $dumpvars(0,Sim);
end

initial begin
    reset = 0;
    io_DataIn = 12'b1111_1111_1111;
    io_Halting = 0;
    io_Unlocking = 0;
    #20 reset = 1;
    #20 reset = 0;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1111_1111_1011;
    #20 io_DataIn = 12'b1111_1111_0111;
    #20 io_DataIn = 12'b1111_1110_1111;
    #20 io_DataIn = 12'b1111_1101_1111;
    #20 io_DataIn = 12'b1111_1011_1111;
    #20 io_DataIn = 12'b1111_0111_1111;
    #20 io_DataIn = 12'b1110_1111_1111;
    #20 io_DataIn = 12'b1101_1111_1111;
    #20 io_DataIn = 12'b1011_1111_1111;
    #20 io_DataIn = 12'b0111_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1011_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1110_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1110_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1101_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1111_1111_1011;
    #20 io_DataIn = 12'b1111_1111_0111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1111_1111_1011;
    #20 io_DataIn = 12'b1111_1111_0111;
    #20 io_DataIn = 12'b1011_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1111_1111_1011;
    #20 io_DataIn = 12'b1111_1111_0111;
    #20 io_DataIn = 12'b1111_1110_1111;
    #20 io_DataIn = 12'b1111_1101_1111;
    #20 io_DataIn = 12'b1111_1011_1111;
    #20 io_DataIn = 12'b1111_0111_1111;
    #20 io_DataIn = 12'b1110_1111_1111;
    #20 io_DataIn = 12'b1101_1111_1111;
    #20 io_DataIn = 12'b1011_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1111_1111_1011;
    #20 io_DataIn = 12'b1111_1111_0111;
    #20 io_DataIn = 12'b1111_1110_1111;
    #20 io_DataIn = 12'b1111_1101_1111;
    #20 io_DataIn = 12'b1111_1011_1111;
    #20 io_DataIn = 12'b1111_0111_1111;
    #20 io_DataIn = 12'b1110_1111_1111;
    #20 io_DataIn = 12'b1101_1111_1111;
    #20 io_DataIn = 12'b1011_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1111_1111_1011;
    #20 io_DataIn = 12'b1111_1111_0111;
    #20 io_DataIn = 12'b1111_1110_1111;
    #20 io_DataIn = 12'b1111_1101_1111;
    #20 io_DataIn = 12'b1111_1011_1111;
    #20 io_DataIn = 12'b1111_0111_1111;
    #20 io_DataIn = 12'b1110_1111_1111;
    #20 io_DataIn = 12'b1101_1111_1111;
    #20 io_DataIn = 12'b1011_1111_1111;
    #20 io_DataIn = 12'b1111_1111_1111;
    #20 io_Halting = 1;
        io_DataIn = 12'b1111_1111_1110;
    #20 io_DataIn = 12'b1111_1111_1101;
    #20 io_DataIn = 12'b1111_1111_1011;
    #20 io_DataIn = 12'b1111_1111_0111;
    #20 io_DataIn = 12'b1111_1110_1111;
    #20 io_DataIn = 12'b1111_1101_1111;
    #20 io_DataIn = 12'b1111_1011_1111;
    #20 io_DataIn = 12'b1111_0111_1111;
    #20 io_DataIn = 12'b1110_1111_1111;
    #60;
    $finish;
end

endmodule